﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;


namespace BattleTank3D.Telas
{
    class Menu
    {
        /// <summary>
        /// imagem da tela
        /// </summary>
        Texture2D imagemTela;
        /// <summary>
        /// opção que esta sendo selecionada
        /// </summary>
        public int opcaoSelecionada;
        /// <summary>
        /// numero de opções
        /// </summary>
        int limiteOpcoes;

        /// <summary>
        /// posicao y da primeira opção 
        /// </summary>
        int posicaoYOpcao;

        /// <summary>
        /// distancia y entre as opções
        /// </summary>
        int posicaoXOpcao;

        /// <summary>
        /// posição x das opções
        /// </summary>
        int distanciaYOpcao;



        /// <summary>
        /// texto das opcoes
        /// </summary>
        List<String> opcao = new List<string>();

        /// <summary>
        /// Fonte do texto utilizad no menu
        /// </summary>
        SpriteFont fonteMenu;

        /// <summary>
        /// Texto das opções do menu
        /// </summary>
        String[] opcoesMenu;

        public Menu()// funcao de inicializacao
        {
           opcaoSelecionada = 0;// sempre é inicializado na primeira opção
            this.opcao.Clear();
            
        }

        public void LoadContent(ContentManager Content, int PreferredBackBufferHeight)
        {

            opcoesMenu = new String[] { "Partir em missão", "Equipe de Desenvolvedores", "Sair" };
            this.imagemTela = Content.Load<Texture2D>("Telas/menu");
            this.limiteOpcoes = opcoesMenu.Length;
            this.posicaoYOpcao = 225;
            this.posicaoXOpcao = 100;
            this.distanciaYOpcao = (PreferredBackBufferHeight - 300) / 3;
            this.fonteMenu = Content.Load<SpriteFont>("Fonts/menuFont");

            for (int i = 0; i < opcoesMenu.Length; i++)
            {
                this.opcao.Add(opcoesMenu[i]);
            }
        }

        public void Update()// impede que o jogador selecione uma opção que não está na lista
        {
            if (opcaoSelecionada >= limiteOpcoes) 
            { 
                opcaoSelecionada = 0; 
            }
            else if (opcaoSelecionada < 0) 
            { 
                opcaoSelecionada = limiteOpcoes - 1; 
            }
        }

        public void Draw(SpriteBatch spriteBatch,int PreferredBackBufferWidth, int PreferredBackBufferHeight)
        {
            spriteBatch.Begin();
            spriteBatch.Draw(this.imagemTela, new Rectangle(
                        0, 0,
                        PreferredBackBufferWidth, PreferredBackBufferHeight),
                        Color.White);
            for (int i = 0; i < limiteOpcoes; i++)
            {
                if (i == opcaoSelecionada)
                {
                    spriteBatch.DrawString(this.fonteMenu, opcao[i], new Vector2(posicaoXOpcao,(posicaoYOpcao + i * distanciaYOpcao)), Color.Green);
                }
                else
                {
                    spriteBatch.DrawString(this.fonteMenu, opcao[i], new Vector2(posicaoXOpcao, (posicaoYOpcao + i * distanciaYOpcao)), Color.White);
                }
            }

            spriteBatch.End();
        }
    }
}
